package com.hnyyjsxy.service.impl;

import com.hnyyjsxy.dao.TeacherDao;
import com.hnyyjsxy.dao.impl.TeacherDaoImpl;
import com.hnyyjsxy.domain.*;
import com.hnyyjsxy.service.TeacherService;
import com.hnyyjsxy.util.MailUtils;

import java.util.List;

/**
 * @date 2021/02/05
 */
public class TeacherServiceImpl implements TeacherService {
    TeacherDao teacherDao = new TeacherDaoImpl();

    /**
     * 根据账号查询宿管信息
     * @param account
     * @return
     */
    @Override
    public Teacher getTeacherByAccount(String account) {
        return teacherDao.getTeacherByAccount(account);
    }

    /**
     * 查询该床号是否已有人
     * @param building
     * @param room
     * @param bed
     * @return 如果有人就返回true
     */
    @Override
    public boolean queryBedExist(String building, String room, String bed) {
        return teacherDao.queryBedExist(building,room,bed);
    }

    /**
     * 查询该楼栋下的所有调换宿舍的申请
     * @param building
     * @return
     */
    @Override
    public List<ApplyFor> queryStudentApply(String building) {
        return teacherDao.queryStudentApply(building);
    }

    /**
     * 处理学生调换宿舍的申请
     * @param sid 学号
     * @param room 房间号
     * @param bed 床号
     * @param flag 是否同意 1代表同意  0代表拒绝
     * @param email 学生邮箱
     */
    @Override
    public void disposeStudentApply(String sid, String room, String bed, String flag, String email) {
        //1. 判断是否同意调换宿舍申请
        if ("1".equals(flag)){
            //同意
            teacherDao.consentApply(sid,room,bed);
            //发送处理结果邮件给学生
            MailUtils.sendMail(email,"宿管老师同意了您的调换宿舍至"+room+"房间的"+bed+"号床的"+"申请!!","调换宿舍处理结果");
        }else{
            //拒绝
            teacherDao.refusedApply(sid);
            //发送处理结果邮件给学生
            MailUtils.sendMail(email,"宿管老师拒绝了您的调换宿舍至"+room+"房间的"+bed+"号床的"+"申请。如有疑问请联系宿管老师","调换宿舍处理结果");
        }
    }

    /**
     * 添加学生违纪情况
     * @param sid
     * @param cause
     */
    @Override
    public void addStudentViolate(String sid, String cause) {
        teacherDao.addStudentViolate(sid,cause);
    }

    /**
     * 添加外访人员记录
     * @param stranger 外访人员
     */
    @Override
    public void addStrangerRecord(Stranger stranger) {
        teacherDao.addStrangerRecord(stranger);
    }

    /**
     * 分页查询外访人员信息
     * @param sname 姓名
     * @param curpage 当前页
     * @param building 楼栋号
     * @return
     */
    @Override
    public PageBean queryStrangerRecord(String sname, int curpage, String building) {
        //1. 创建一个PageBean对象
        PageBean pageBean = new PageBean();
        //2. 调用dao查询总记录数
        int totalCount = teacherDao.queryStrangerCount(building, sname);
        pageBean.setTotalCount(totalCount);
        //3. 计算总页数，默认每页展示五条
        int pageCount = totalCount%5==0 ? totalCount/5 :(totalCount/5+1);
        pageBean.setTotalPage(pageCount);
        //4. 查询当前页外访人员的信息
        List<Stranger> strangers = teacherDao.queryStrangerRecord(building, sname, (curpage - 1) * 5, 5);
        pageBean.setList(strangers);
        return pageBean;
    }

    /**
     * 查询该卡号的是否存在
     * @param idCard
     * @return
     */
    @Override
    public DoorForbidding queryCard(String idCard) {
        return teacherDao.queryCard(idCard);
    }

    /**
     * 通过学号删除学生信息
     * @param sid 学号
     */
    @Override
    public void delStudentBySid(String sid) {
        teacherDao.delStudentBySid(sid);
    }

    /**
     * 通过班级查询学生信息
     * @param squad 班级
     * @param building 楼栋号
     * @return
     */
    @Override
    public List<Student> queryStudentBySquad(String squad,String building) {
        return teacherDao.queryStudentBySquad(squad,building);
    }


}
